﻿Public Class DmodeloInmueble

    Public Shared Function SeleccionarTodo(ByVal descEmpresa As String, ByVal idProyecto As Int32, ByVal idEtapa As Int32) As List(Of EmodeloInmueble)
        Dim modelos As List(Of EmodeloInmueble) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_modeloInmueble_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                cmd.Parameters.Add("@idEtapa ", SqlDbType.Int).Value = idEtapa
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            modelos = New List(Of EmodeloInmueble)
                            Dim modelo As EmodeloInmueble = Nothing
                            Do While dr.Read
                                modelo = New EmodeloInmueble( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTerrModelo")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTechada")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaConstruida")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaVendible")), _
                                    dr.GetInt16(dr.GetOrdinal("ascensorDirecto")), _
                                    dr.GetInt32(dr.GetOrdinal("nroHabitaciones")), _
                                    dr.GetInt32(dr.GetOrdinal("nroBaños")), _
                                    dr.GetInt16(dr.GetOrdinal("patioJardin")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaPatio")), _
                                    dr.GetString(dr.GetOrdinal("imagen")), _
                                    dr.GetString(dr.GetOrdinal("observacion")), _
                                    dr.GetString(dr.GetOrdinal("estado")))
                                modelos.Add(modelo)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return modelos
    End Function
    Public Shared Function Añadir(ByVal descEmpresa As String, ByVal pModeloInmueble As EmodeloInmueble) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_modeloInmueble_add", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pModeloInmueble.idProyecto
                cmd.Parameters.Add("@idEtapa ", SqlDbType.Int).Value = pModeloInmueble.idEtapa
                cmd.Parameters.Add("@nomModelo", SqlDbType.VarChar, 55).Value = pModeloInmueble.nomModelo
                cmd.Parameters.Add("@idTpoInmueble", SqlDbType.Int).Value = pModeloInmueble.EtpoInmueble.idTpoInmueble
                cmd.Parameters.Add("@areaTerrModelo", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaTerrModelo
                cmd.Parameters.Add("@areaTechada", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaTechada
                cmd.Parameters.Add("@areaConstruida", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaConstruida
                cmd.Parameters.Add("@areaVendible", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaVendible
                cmd.Parameters.Add("@ascensorDirecto", SqlDbType.Int).Value = pModeloInmueble.patioJardin
                cmd.Parameters.Add("@nroHabitaciones", SqlDbType.Int).Value = pModeloInmueble.nroHabitaciones
                cmd.Parameters.Add("@nroBaños", SqlDbType.Int).Value = pModeloInmueble.nroBaños
                cmd.Parameters.Add("@patioJardin", SqlDbType.Int).Value = pModeloInmueble.patioJardin
                cmd.Parameters.Add("@areaPatio", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaPatio
                cmd.Parameters.Add("@imagen", SqlDbType.VarChar, 55).Value = pModeloInmueble.imagen
                cmd.Parameters.Add("@observacion", SqlDbType.Text).Value = pModeloInmueble.observacion
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pModeloInmueble.idUsuario
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Editar(ByVal descEmpresa As String, ByVal pModeloInmueble As EmodeloInmueble) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_modeloInmueble_edit", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pModeloInmueble.idProyecto
                cmd.Parameters.Add("@idEtapa ", SqlDbType.Int).Value = pModeloInmueble.idEtapa
                cmd.Parameters.Add("@idModelo", SqlDbType.Int).Value = pModeloInmueble.idModelo
                cmd.Parameters.Add("@nomModelo", SqlDbType.VarChar, 55).Value = pModeloInmueble.nomModelo
                cmd.Parameters.Add("@idTpoInmueble", SqlDbType.Int).Value = pModeloInmueble.EtpoInmueble.idTpoInmueble
                cmd.Parameters.Add("@areaTerrModelo", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaTerrModelo
                cmd.Parameters.Add("@areaTechada", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaTechada
                cmd.Parameters.Add("@areaConstruida", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaConstruida
                cmd.Parameters.Add("@areaVendible", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaVendible
                cmd.Parameters.Add("@ascensorDirecto", SqlDbType.Int).Value = pModeloInmueble.patioJardin
                cmd.Parameters.Add("@nroHabitaciones", SqlDbType.Int).Value = pModeloInmueble.nroHabitaciones
                cmd.Parameters.Add("@nroBaños", SqlDbType.Int).Value = pModeloInmueble.nroBaños
                cmd.Parameters.Add("@patioJardin", SqlDbType.Int).Value = pModeloInmueble.patioJardin
                cmd.Parameters.Add("@areaPatio", SqlDbType.Decimal, 15, 2).Value = pModeloInmueble.areaPatio
                cmd.Parameters.Add("@imagen", SqlDbType.VarChar, 55).Value = pModeloInmueble.imagen
                cmd.Parameters.Add("@observacion", SqlDbType.Text).Value = pModeloInmueble.observacion
                cmd.Parameters.Add("@estado", SqlDbType.Char, 1).Value = pModeloInmueble.estado
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pModeloInmueble.idUsuario
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Eliminar(ByVal descEmpresa As String, ByVal pModeloInmueble As EmodeloInmueble) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_modeloInmueble_del", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pModeloInmueble.idProyecto
                cmd.Parameters.Add("@idEtapa ", SqlDbType.Int).Value = pModeloInmueble.idEtapa
                cmd.Parameters.Add("@idModelo", SqlDbType.Int).Value = pModeloInmueble.idModelo
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pModeloInmueble.idUsuario
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using
        Return resultado
    End Function

    '******* RptGerenciales xModelos *******'
    Public Shared Function rptGerenciales_xModelo(ByVal descEmpresa As String, ByVal rptGerencial As EproformaCabecera) As List(Of EmodeloInmueble)
        Dim modelos As List(Of EmodeloInmueble) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_rptGerencial_xModelo", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = rptGerencial.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = rptGerencial.idEtapa
                cmd.Parameters.Add("@FechaInicial", SqlDbType.Char, 10).Value = rptGerencial.fchInicio
                cmd.Parameters.Add("@FechaFinal", SqlDbType.Char, 10).Value = rptGerencial.fchFin
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            modelos = New List(Of EmodeloInmueble)
                            Dim modelo As EmodeloInmueble = Nothing
                            Do While dr.Read
                                modelo = New EmodeloInmueble( _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("cantidad")), _
                                    dr.GetDecimal(dr.GetOrdinal("porcentaje")))
                                modelos.Add(modelo)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return modelos
    End Function

End Class
